export const getInputs = () => [
	[20, 3],
	[16, 2],
	[2, 2],
	[1, 2],
	[13, 3],
	[16, 2],
	[16, 3],
	[17, 2],
	[23, 2],
];

/**
 * **[6323. 将钱分给最多的儿童](https://leetcode.cn/contest/biweekly-contest-100/problems/distribute-money-to-maximum-children/)**
 *
 * 给你一个整数 `money` ，表示你总共有的钱数（单位为美元）和另一个整数 `children` ，表示你要将钱分配给多少个儿童。
 *
 * 你需要按照如下规则分配：
 *
 * - 所有的钱都必须被分配。
 * - 每个儿童至少获得 `1` 美元。
 * - 没有人获得 `4` 美元。
 *
 * 请你按照上述规则分配金钱，并返回 **最多** 有多少个儿童获得 **恰好** `8` 美元。如果没有任何分配方案，返回 `-1` 。
 *
 * @param money
 * @param children
 * @returns
 */
export default function (money: number, children: number): number {
	const availableTotal = money - children; // 每个小孩分一元后还剩下的钱。
	if (availableTotal < 7) return 0;
	if (money < children) return -1;

	const check = (res: number): number => {
		const left = availableTotal - res * 7;
		const leftChildren = children - res;

		if (leftChildren === 0 && left > 0) return -1;
		if (leftChildren === 1 && left === 3) return -1;

		return res;
	};

	let result = Math.min(Math.floor(availableTotal / 7), children);

	while (result >= 0) {
		if (check(result) !== -1) break;
		result--;
	}

	return result;
}
